#ifndef __NONEQ_MD_Bond_wanghan_h__
#define __NONEQ_MD_Bond_wanghan_h__

#include <algorithm>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <list>
#include <map>
#include <set>
#include <sstream>
#include <string>
#include <queue>
#include <vector>
#include <cmath>

using namespace std;

struct VectorType
{
  double x, y, z;
  VectorType (const double xx=0, const double yy=0, const double zz=0);
};

class BondCalculator
{
  vector<double > box;
public:
  BondCalculator (const vector<double > & box);
  double calBond (const vector<vector<double> > & xx);
  void calGrad (const vector<vector<double> > & xx,
		const double & dx,
		vector<vector<double> > & grad);
  double calLaplacian (const vector<vector<double> > & xx,
		       const double & dx);
}
    ;

#endif
